package cn.edu.ncu.housinghub.entity.user;

import cn.edu.ncu.housinghub.entity.house.House;
import jakarta.validation.constraints.*;
import lombok.Data;

import java.util.List;

import lombok.NoArgsConstructor;

/**
 * 中介表（关联用户表，存储中介特有信息）
 */
@Data
@NoArgsConstructor
public class Agent {
    @NotNull(message = "用户ID不能为空")
    private Long userId; // 关联用户ID（外键 -> USER.userId）

    @NotNull(message = "中介ID不能为空")
    private Long agentId; // 中介ID（主键）

    private List<House> houses; // 代理房源

    @NotNull(message = "中介认证ID不能为空")
    private Long agentVerifyId; // 中介认证

    @NotBlank(message = "营业执照编号不能为空")
    private String licenseNo; // 营业执照编号

    // 营业执照照片地址
    @NotBlank(message = "营业执照照片地址不能为空")
    private String licensePicPath;

    // 手机号
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式错误")
    private String phone;

    // 公司名
    @NotBlank(message = "公司名不能为空")
    private String companyName;

    // 公司地址
    @NotBlank(message = "公司地址不能为空")
    private String companyPosition;

    // 真实姓名
    @NotBlank(message = "真实姓名不能为空")
    private String realName;

    // 身份证号码
    @NotBlank(message = "身份证号码不能为空")
    @Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$", message = "身份证号码格式错误")
    private String idCard;

    // 邮箱
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式错误")
    private String email;

    // 城市
    @NotBlank(message = "城市不能为空")
    private String city;

    // 工作年限
    @NotNull(message = "工作年限不能为空")
    @Min(value = 0, message = "工作年限必须为正数")
    @Max(value = 30, message = "工作年限不能超过30")
    private Integer workYears;

    private Boolean isDeleted = false; // 软删除标记

    public Agent(Long agentId) {
        this.agentId = agentId;
    }
}
